#include <stdio.h>

void i_c_c()
{
    /*1169:	f3 0f 1e fa          	endbr64 
    116d:	55                   	push   %rbp
    116e:	48 89 e5             	mov    %rsp,%rbp
    1171:	48 83 ec 40          	sub    $0x40,%rsp
    1175:	64 48 8b 04 25 28 00 	mov    %fs:0x28,%rax
    117c:	00 00 
    117e:	48 89 45 f8          	mov    %rax,-0x8(%rbp)
    1182:	31 c0                	xor    %eax,%eax
    1184:	c7 45 c8 d2 04 00 00 	movl   $0x4d2,-0x38(%rbp)*/
		int a = 1234;

    /*118b:	48 c7 45 d0 00 00 00 	movq   $0x0,-0x30(%rbp)
    1192:	00 
    1193:	48 c7 45 d8 00 00 00 	movq   $0x0,-0x28(%rbp)
    119a:	00 
    119b:	48 c7 45 e0 00 00 00 	movq   $0x0,-0x20(%rbp)
    11a2:	00 
    11a3:	48 c7 45 e8 00 00 00 	movq   $0x0,-0x18(%rbp)
    11aa:	00 */
		char b[32] = {0};

    /*11ab:	c7 45 cc 00 00 00 00 	movl   $0x0,-0x34(%rbp)*/
		int c = 0;

    /*11b2:	8b 45 c8             	mov    -0x38(%rbp),%eax	// eax = a
    11b5:	48 63 d0             	movslq %eax,%rdx		// rdx = a
    11b8:	48 69 d2 d3 4d 62 10 	imul   $0x10624dd3,%rdx,%rdx	// rdx = a * 0x10624dd3 = 0x4ef9db2316
    11bf:	48 c1 ea 20          	shr    $0x20,%rdx		// rdx = (a * 0x10624dd3) >> 0x20 = 0x4e
    11c3:	c1 fa 06             	sar    $0x6,%edx		// edx = (((a * 0x10624dd3) >> 0x20))>>0x6 = 0x1
															// 2^38 / 274877907 = 999.9999 = 1000 
    11c6:	c1 f8 1f             	sar    $0x1f,%eax		// eax = ((((a * 0x10624dd3) >> 0x20))>>0x6)>> 0x1f = 0x0
    11c9:	29 c2                	sub    %eax,%edx		// edx = 1-0 = 1
    11cb:	89 d0                	mov    %edx,%eax		// eax = 1
    11cd:	89 45 cc             	mov    %eax,-0x34(%rbp)	*/ 
		c = a / 1000;

    /*11d0:	8b 45 cc             	mov    -0x34(%rbp),%eax	// eax = c
    11d3:	ba ea 00 00 00       	mov    $0xea,%edx		// edx = ea
    11d8:	89 c6                	mov    %eax,%esi		// esi = c
    11da:	48 8d 3d 23 0e 00 00 	lea    0xe23(%rip),%rdi        # 2004 <_IO_stdin_used+0x4>
    11e1:	b8 00 00 00 00       	mov    $0x0,%eax
    11e6:	e8 85 fe ff ff       	callq  1070 <printf@plt>*/
		printf("%d %d\n", c, 0xea);

    /*11eb:	8b 45 cc             	mov    -0x34(%rbp),%eax	// eax = c
    11ee:	83 c0 30             	add    $0x30,%eax		// eax = c + 0x30
    11f1:	88 45 d0             	mov    %al,-0x30(%rbp)	// (rbp-0x30) = eax&0xffff */
		b[0] = c + 0x30;

    /*11f4:	8b 45 c8             	mov    -0x38(%rbp),%eax	// eax = 1234
    11f7:	48 63 d0             	movslq %eax,%rdx		// rdx = 1234
    11fa:	48 69 d2 1f 85 eb 51 	imul   $0x51eb851f,%rdx,%rdx	// rdx = 1234 * 0x51eb851f = 0x18AE147AF6E
    1201:	48 c1 ea 20          	shr    $0x20,%rdx		// rdx = 0x18A	
    1205:	c1 fa 05             	sar    $0x5,%edx		// edx = 0x18A>>0x5 = 12  (2^37/1374389535 = 99.999999 = 100)
    1208:	c1 f8 1f             	sar    $0x1f,%eax		// eax = 0
    120b:	29 c2                	sub    %eax,%edx		// edx = edx-eax = 12
    120d:	48 63 c2             	movslq %edx,%rax		// rax = 12
    1210:	48 69 c0 67 66 66 66 	imul   $0x66666667,%rax,%rax	// rax = 12*0x66666667 = 0x4CCCCCCD4
    1217:	48 c1 e8 20          	shr    $0x20,%rax		// rax = 0x4	(2^34/1717986919 = 9.999999 = 10)
    121b:	89 c1                	mov    %eax,%ecx		// ecx = 0x4
    121d:	c1 f9 02             	sar    $0x2,%ecx		// ecx = 1
    1220:	89 d0                	mov    %edx,%eax		// eax = 12
    1222:	c1 f8 1f             	sar    $0x1f,%eax		// eax = 0
    1225:	29 c1                	sub    %eax,%ecx		// ecx = 1-0 = 1
    1227:	89 c8                	mov    %ecx,%eax		// eax = 1
    1229:	89 45 cc             	mov    %eax,-0x34(%rbp)	// (rbp-0x34) = 1
    122c:	8b 4d cc             	mov    -0x34(%rbp),%ecx	// ecx = 1
    122f:	89 c8                	mov    %ecx,%eax		// eax = 1
    1231:	c1 e0 02             	shl    $0x2,%eax		// eax = 4
    1234:	01 c8                	add    %ecx,%eax		// eax = 5
    1236:	01 c0                	add    %eax,%eax		// eax = 10
    1238:	29 c2                	sub    %eax,%edx		// edx = 12-10 = 2
    123a:	89 d0                	mov    %edx,%eax		// eax = 2
    123c:	89 45 cc             	mov    %eax,-0x34(%rbp)*/
		c = a / 100 % 10;

    /*123f:	8b 45 cc             	mov    -0x34(%rbp),%eax	// eax = 2
    1242:	83 c0 30             	add    $0x30,%eax		// eax = 2+0x30
    1245:	88 45 d1             	mov    %al,-0x2f(%rbp)*/
		b[1] = c + 0x30;

	/*1248:	8b 45 c8             	mov    -0x38(%rbp),%eax		// eax = 1234
    124b:	48 63 d0             	movslq %eax,%rdx
    124e:	48 69 d2 67 66 66 66 	imul   $0x66666667,%rdx,%rdx	// rdx = 1234*0x66666667 = 0x1ED 9999 9C7E
    1255:	48 c1 ea 20          	shr    $0x20,%rdx			// rdx = 0x1ED
    1259:	c1 fa 02             	sar    $0x2,%edx			// edx = (0x1ED>>2) = 123 (2^34/1717986919 = 9.999999 = 10)
    125c:	c1 f8 1f             	sar    $0x1f,%eax			// eax = 0
    125f:	29 c2                	sub    %eax,%edx			// edx = 123-0 = 123
    1261:	48 63 c2             	movslq %edx,%rax			// rax = 123
    1264:	48 69 c0 67 66 66 66 	imul   $0x66666667,%rax,%rax	// rax = 123*0x66666667 = 0x31 3333 337D
    126b:	48 c1 e8 20          	shr    $0x20,%rax			// rax = 0x31
    126f:	89 c1                	mov    %eax,%ecx			// ecx = 0x31
    1271:	c1 f9 02             	sar    $0x2,%ecx			// ecx = (0x31>>2) = 12
    1274:	89 d0                	mov    %edx,%eax			// eax = 123
    1276:	c1 f8 1f             	sar    $0x1f,%eax			// eax = 0
    1279:	29 c1                	sub    %eax,%ecx			// ecx = 12-0 = 12
    127b:	89 c8                	mov    %ecx,%eax			// eax = 12
    127d:	89 45 cc             	mov    %eax,-0x34(%rbp)		// (rbp-0x34) = 12
    1280:	8b 4d cc             	mov    -0x34(%rbp),%ecx		// ecx = 12
    1283:	89 c8                	mov    %ecx,%eax			// eax = 12
    1285:	c1 e0 02             	shl    $0x2,%eax			// eax = (12<<2) = 48
    1288:	01 c8                	add    %ecx,%eax			// eax = 48+12 = 60
    128a:	01 c0                	add    %eax,%eax			// eax = 120
    128c:	29 c2                	sub    %eax,%edx			// edx = 123-120 = 3
    128e:	89 d0                	mov    %edx,%eax			// eax = 3
    1290:	89 45 cc             	mov    %eax,-0x34(%rbp) */
		c = a / 10 % 10;

    /*1293:	8b 45 cc             	mov    -0x34(%rbp),%eax
    1296:	83 c0 30             	add    $0x30,%eax
    1299:	88 45 d2             	mov    %al,-0x2e(%rbp)*/
		b[2] = c + 0x30;

    /*129c:	8b 55 c8             	mov    -0x38(%rbp),%edx		// eax = 1234
    129f:	48 63 c2             	movslq %edx,%rax			// rax = 1234
    12a2:	48 69 c0 67 66 66 66 	imul   $0x66666667,%rax,%rax	// rax = 1234*0x66666667 = 0x1ED 9999 9C7E
    12a9:	48 c1 e8 20          	shr    $0x20,%rax			// rax = 0x1ED	2^34/1717986919 = 9.999999 = 10
    12ad:	89 c1                	mov    %eax,%ecx			// ecx = 0x1ED
    12af:	c1 f9 02             	sar    $0x2,%ecx			// ecx = 123
    12b2:	89 d0                	mov    %edx,%eax			// eax = 1234
    12b4:	c1 f8 1f             	sar    $0x1f,%eax			// eax = 0
    12b7:	29 c1                	sub    %eax,%ecx			// ecx = 123-0 = 123
    12b9:	89 c8                	mov    %ecx,%eax			// eax = 123
    12bb:	c1 e0 02             	shl    $0x2,%eax			// eax = 492
    12be:	01 c8                	add    %ecx,%eax			// eax = 615
    12c0:	01 c0                	add    %eax,%eax			// eax = 1230
    12c2:	29 c2                	sub    %eax,%edx			// edx = 1234-1230 = 4
    12c4:	89 d0                	mov    %edx,%eax			// eax = 4
    12c6:	89 45 cc             	mov    %eax,-0x34(%rbp)*/
		c = a % 10;

    /*12c9:	8b 45 cc             	mov    -0x34(%rbp),%eax
    12cc:	83 c0 30             	add    $0x30,%eax
    12cf:	88 45 d3             	mov    %al,-0x2d(%rbp)*/
		b[3] = c + 0x30;

    /*12d2:	48 8d 45 d0          	lea    -0x30(%rbp),%rax
    12d6:	48 89 c6             	mov    %rax,%rsi
    12d9:	48 8d 3d 31 0d 00 00 	lea    0xd31(%rip),%rdi        # 2011 <_IO_stdin_used+0x11>
    12e0:	b8 00 00 00 00       	mov    $0x0,%eax
    12e5:	e8 86 fd ff ff       	callq  1070 <printf@plt>*/
		printf("%s\n", b);
    /*12ea:	90                   	nop
    12eb:	48 8b 45 f8          	mov    -0x8(%rbp),%rax
    12ef:	64 48 33 04 25 28 00 	xor    %fs:0x28,%rax
    12f6:	00 00 
    12f8:	74 05                	je     12ff <i_c_c+0x196>
    12fa:	e8 61 fd ff ff       	callq  1060 <__stack_chk_fail@plt>
    12ff:	c9                   	leaveq 
    1300:	c3                   	retq   */
}

void h_c_c()
{
    /*1301:	f3 0f 1e fa          	endbr64 
    1305:	55                   	push   %rbp
    1306:	48 89 e5             	mov    %rsp,%rbp
    1309:	48 83 ec 40          	sub    $0x40,%rsp
    130d:	64 48 8b 04 25 28 00 	mov    %fs:0x28,%rax
    1314:	00 00 
    1316:	48 89 45 f8          	mov    %rax,-0x8(%rbp)
    131a:	31 c0                	xor    %eax,%eax
    131c:	c7 45 c8 ef cd ab 00 	movl   $0xabcdef,-0x38(%rbp)*/
		int a = 0xabcdef;

    /*1323:	48 c7 45 d0 00 00 00 	movq   $0x0,-0x30(%rbp)
    132a:	00 
    132b:	48 c7 45 d8 00 00 00 	movq   $0x0,-0x28(%rbp)
    1332:	00 
    1333:	48 c7 45 e0 00 00 00 	movq   $0x0,-0x20(%rbp)
    133a:	00 
    133b:	48 c7 45 e8 00 00 00 	movq   $0x0,-0x18(%rbp)
    1342:	00 */
		char b[32] = {0};

    /* 1343:	c7 45 cc 00 00 00 00 	movl   $0x0,-0x34(%rbp) */
		int c = 0;
	
	/*134a:	8b 45 c8             	mov    -0x38(%rbp),%eax		// eax = 0xabcdef
    134d:	c1 f8 14             	sar    $0x14,%eax
    1350:	89 45 cc             	mov    %eax,-0x34(%rbp)	*/
		c = a >> 0x14;

    /*1353:	8b 45 cc             	mov    -0x34(%rbp),%eax
    1356:	83 c0 57             	add    $0x57,%eax
    1359:	88 45 d0             	mov    %al,-0x30(%rbp)*/
		b[0] = c + 0x57;

    /*135c:	8b 45 c8             	mov    -0x38(%rbp),%eax		// eax = 0xabcdef
    135f:	c1 f8 10             	sar    $0x10,%eax
    1362:	89 45 cc             	mov    %eax,-0x34(%rbp)*/
		c = a >> 0x10;

    /*1365:	83 65 cc 0f          	andl   $0xf,-0x34(%rbp)*/
		c &= 0xf;

    /*1369:	8b 45 cc             	mov    -0x34(%rbp),%eax
    136c:	83 c0 57             	add    $0x57,%eax
    136f:	88 45 d1             	mov    %al,-0x2f(%rbp)*/
		b[1] = c + 0x57;

    /*1372:	8b 45 c8             	mov    -0x38(%rbp),%eax		// eax = 0xabcdef
    1375:	c1 f8 0c             	sar    $0xc,%eax
    1378:	89 45 cc             	mov    %eax,-0x34(%rbp)*/
		c = a >> 0xc;

    /*137b:	83 65 cc 0f          	andl   $0xf,-0x34(%rbp)*/
		c &= 0xf;

    /*137f:	8b 45 cc             	mov    -0x34(%rbp),%eax
    1382:	83 c0 57             	add    $0x57,%eax
    1385:	88 45 d2             	mov    %al,-0x2e(%rbp)*/
		b[2] = c + 0x57;

    /*1388:	8b 45 c8             	mov    -0x38(%rbp),%eax		// eax = 0xabcdef
    138b:	c1 f8 08             	sar    $0x8,%eax
    138e:	89 45 cc             	mov    %eax,-0x34(%rbp)*/
		c = a >> 0x8;

    /*1391:	83 65 cc 0f          	andl   $0xf,-0x34(%rbp)*/
		c &= 0xf;

    /*1395:	8b 45 cc             	mov    -0x34(%rbp),%eax
    1398:	83 c0 57             	add    $0x57,%eax
    139b:	88 45 d3             	mov    %al,-0x2d(%rbp)*/
		b[3] = c + 0x57;

    /*139e:	8b 45 c8             	mov    -0x38(%rbp),%eax		// eax = 0xabcdef
    13a1:	c1 f8 04             	sar    $0x4,%eax
    13a4:	89 45 cc             	mov    %eax,-0x34(%rbp)*/
		c = a >> 0x4;

    /*13a7:	83 65 cc 0f          	andl   $0xf,-0x34(%rbp)*/
		c &= 0xf;

    /*13ab:	8b 45 cc             	mov    -0x34(%rbp),%eax
    13ae:	83 c0 57             	add    $0x57,%eax
    13b1:	88 45 d4             	mov    %al,-0x2c(%rbp)*/
		b[4] = c + 0x57;

    /*13b4:	8b 45 c8             	mov    -0x38(%rbp),%eax		// eax = 0xabcdef
    13b7:	89 45 cc             	mov    %eax,-0x34(%rbp)*/
		c = a >> 0x0;

    /*13ba:	83 65 cc 0f          	andl   $0xf,-0x34(%rbp)*/
		c &= 0xf;

    /*13be:	8b 45 cc             	mov    -0x34(%rbp),%eax
    13c1:	83 c0 57             	add    $0x57,%eax
    13c4:	88 45 d5             	mov    %al,-0x2b(%rbp)*/
		b[5] = c + 0x57;

    /*13c7:	48 8d 45 d0          	lea    -0x30(%rbp),%rax
    13cb:	48 89 c6             	mov    %rax,%rsi
    13ce:	48 8d 3d 4e 0c 00 00 	lea    0xc4e(%rip),%rdi        # 2023 <_IO_stdin_used+0x23>
    13d5:	b8 00 00 00 00       	mov    $0x0,%eax
    13da:	e8 91 fc ff ff       	callq  1070 <printf@plt>*/
		printf("%s\n", b);

    /*13df:	90                   	nop
    13e0:	48 8b 45 f8          	mov    -0x8(%rbp),%rax
    13e4:	64 48 33 04 25 28 00 	xor    %fs:0x28,%rax
    13eb:	00 00 
    13ed:	74 05                	je     13f4 <h_c_c+0xf3>
    13ef:	e8 6c fc ff ff       	callq  1060 <__stack_chk_fail@plt>
    13f4:	c9                   	leaveq 
    13f5:	c3                   	retq   */
}

int main()
{
    /*13f6:	f3 0f 1e fa          	endbr64 
    13fa:	55                   	push   %rbp
    13fb:	48 89 e5             	mov    %rsp,%rbp
    13fe:	48 83 ec 10          	sub    $0x10,%rsp
    1402:	c6 45 ff 30          	movb   $0x30,-0x1(%rbp)*/
		char a = 0x30;

    /*1406:	0f be 55 ff          	movsbl -0x1(%rbp),%edx
    140a:	0f be 45 ff          	movsbl -0x1(%rbp),%eax
    140e:	89 c6                	mov    %eax,%esi
    1410:	48 8d 3d 1d 0c 00 00 	lea    0xc1d(%rip),%rdi        # 2034 <_IO_stdin_used+0x34>
    1417:	b8 00 00 00 00       	mov    $0x0,%eax
    141c:	e8 4f fc ff ff       	callq  1070 <printf@plt>*/
		printf("a = %d = %c\n", a, a);

    /*1421:	c6 45 ff 01          	movb   $0x1,-0x1(%rbp)*/
		a = 0x1;

    /*1425:	0f be 55 ff          	movsbl -0x1(%rbp),%edx
    1429:	0f be 45 ff          	movsbl -0x1(%rbp),%eax
    142d:	89 c6                	mov    %eax,%esi
    142f:	48 8d 3d fe 0b 00 00 	lea    0xbfe(%rip),%rdi        # 2034 <_IO_stdin_used+0x34>
    1436:	b8 00 00 00 00       	mov    $0x0,%eax
    143b:	e8 30 fc ff ff       	callq  1070 <printf@plt>*/
		printf("a = %d = %c\n", a, a); 

    /*1440:	c6 45 ff 31          	movb   $0x31,-0x1(%rbp)	*/
		a = 0x31;

    /*1444:	0f be 55 ff          	movsbl -0x1(%rbp),%edx
    1448:	0f be 45 ff          	movsbl -0x1(%rbp),%eax
    144c:	89 c6                	mov    %eax,%esi
    144e:	48 8d 3d df 0b 00 00 	lea    0xbdf(%rip),%rdi        # 2034 <_IO_stdin_used+0x34>
    1455:	b8 00 00 00 00       	mov    $0x0,%eax
    145a:	e8 11 fc ff ff       	callq  1070 <printf@plt>*/
		printf("a = %d = %c\n", a, a); 

    /*145f:	b8 00 00 00 00       	mov    $0x0,%eax
    1464:	e8 00 fd ff ff       	callq  1169 <i_c_c>*/
	i_c_c();

    /*1469:	b8 00 00 00 00       	mov    $0x0,%eax
    146e:	e8 8e fe ff ff       	callq  1301 <h_c_c>*/
	h_c_c();

    /*1473:	90                   	nop
    1474:	c9                   	leaveq 
    1475:	c3                   	retq   */
	return 0;
}
